Merge "mw.loader: Remove redundant compat code for IE <= 9"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Tue, 4 Apr 2017 22:41:21 +0000 (22:41 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Tue, 4 Apr 2017 22:41:21 +0000 (22:41 +0000)
1  2 
resources/src/mediawiki/mediawiki.js

  
        /* eslint-disable no-console */
        log = ( function () {
 -              // Also update the restoration of methods in mediawiki.log.js
 -              // when adding or removing methods here.
 +              /**
 +               * Write a verbose message to the browser's console in debug mode.
 +               *
 +               * This method is mainly intended for verbose logging. It is a no-op in production mode.
 +               * In ResourceLoader debug mode, it will use the browser's console if available, with
 +               * fallback to creating a console interface in the DOM and logging messages there.
 +               *
 +               * See {@link mw.log} for other logging methods.
 +               *
 +               * @member mw
 +               * @param {...string} msg Messages to output to console.
 +               */
                var log = function () {},
                        console = window.console;
  
 +              // Note: Keep list of methods in sync with restoration in mediawiki.log.js
 +              // when adding or removing mw.log methods below!
 +
                /**
 +               * Collection of methods to help log messages to the console.
 +               *
                 * @class mw.log
                 * @singleton
                 */
  
                /**
 -               * Write a message to the console's warning channel.
 -               * Actions not supported by the browser console are silently ignored.
 +               * Write a message to the browser console's warning channel.
 +               *
 +               * This method is a no-op in browsers that don't implement the Console API.
                 *
                 * @param {...string} msg Messages to output to console
                 */
                        $.noop;
  
                /**
 -               * Write a message to the console's error channel.
 +               * Write a message to the browser console's error channel.
 +               *
 +               * Most browsers also print a stacktrace when calling this method if the
 +               * argument is an Error object.
                 *
 -               * Most browsers provide a stacktrace by default if the argument
 -               * is a caught Error object.
 +               * This method is a no-op in browsers that don't implement the Console API.
                 *
                 * @since 1.26
                 * @param {Error|...string} msg Messages to output to console
                        $.noop;
  
                /**
 -               * Create a property in a host object that, when accessed, will produce
 +               * Create a property on a host object that, when accessed, will produce
                 * a deprecation warning in the console.
                 *
                 * @param {Object} obj Host object of deprecated property
                        return mw.message.apply( mw.message, arguments ).toString();
                },
  
 -              /**
 -               * No-op dummy placeholder for {@link mw.log} in debug mode.
 -               *
 -               * @method
 -               */
 +              // Expose mw.log
                log: log,
  
                /**
                                cssBuffer = '',
                                cssBufferTimer = null,
                                cssCallbacks = $.Callbacks(),
-                               isIE9 = document.documentMode === 9,
                                rAF = window.requestAnimationFrame || setTimeout;
  
                        function getMarker() {
                         * @param {Function} [callback]
                         */
                        function addEmbeddedCSS( cssText, callback ) {
-                               var $style, styleEl;
                                function fireCallbacks() {
                                        var oldCallbacks = cssCallbacks;
                                        // Reset cssCallbacks variable so it's not polluted by any calls to
                                        cssBuffer = '';
                                }
  
-                               // By default, always create a new <style>. Appending text to a <style> tag is
-                               // is a performance anti-pattern as it requires CSS to be reparsed (T47810).
-                               //
-                               // Support: IE 6-9
-                               // Try to re-use existing <style> tags due to the IE stylesheet limit (T33676).
-                               if ( isIE9 ) {
-                                       $style = $( getMarker() ).prev();
-                                       // Verify that the element before the marker actually is a <style> tag created
-                                       // by mw.loader (not some other style tag, or e.g. a <meta> tag).
-                                       if ( $style.data( 'ResourceLoaderDynamicStyleTag' ) ) {
-                                               styleEl = $style[ 0 ];
-                                               styleEl.appendChild( document.createTextNode( cssText ) );
-                                               fireCallbacks();
-                                               return;
-                                       }
-                                       // Else: No existing tag to reuse. Continue below and create the first one.
-                               }
-                               $style = $( newStyleTag( cssText, getMarker() ) );
-                               if ( isIE9 ) {
-                                       $style.data( 'ResourceLoaderDynamicStyleTag', true );
-                               }
+                               $( newStyleTag( cssText, getMarker() ) );
  
                                fireCallbacks();
                        }
                                        el.media = media;
                                }
                                // If you end up here from an IE exception "SCRIPT: Invalid property value.",
-                               // see #addEmbeddedCSS, T33676, and T49277 for details.
+                               // see #addEmbeddedCSS, T33676, T43331, and T49277 for details.
                                el.href = url;
  
                                $( getMarker() ).before( el );
                                                // "https://example.org/x.js", "http://example.org/x.js", "//example.org/x.js", "/x.js"
                                                if ( /^(https?:)?\/?\//.test( modules ) ) {
                                                        if ( type === 'text/css' ) {
-                                                               // Support: IE 7-8
-                                                               // Use properties instead of attributes as IE throws security
-                                                               // warnings when inserting a <link> tag with a protocol-relative
-                                                               // URL set though attributes - when on HTTPS. See T43331.
                                                                l = document.createElement( 'link' );
                                                                l.rel = 'stylesheet';
                                                                l.href = modules;